package org.summerframework.component.security.role.service;

import org.summerframework.component.mybatisplus.BasePlusQueryService;
import org.summerframework.component.security.role.service.dto.UserRoleRelDTO;
import org.summerframework.component.security.role.service.dto.UserRoleRelQueryDTO;

import java.util.List;

public interface UserRoleRelService extends BasePlusQueryService<UserRoleRelDTO, UserRoleRelQueryDTO> {
    /**
     * 用户设置角色
     *
     * @param roleIds 角色id
     * @param userId  用户id
     * @return 插入删除数量
     */
    Integer updateRoleIdsByUserId(List<Long> roleIds, Long userId);

    /**
     * 用户设置角色
     *
     * @param roleIds 角色id
     * @param userId  用户id
     * @param type    角色类型
     * @param relId   关联id
     * @return 插入删除数量
     */
    Integer updateRoleIdsByUserId(List<Long> roleIds, Long userId, Integer type, Long relId);

    /**
     * 用户关联的角色
     *
     * @param userId 用户id
     * @return 平台角色
     */
    List<UserRoleRelDTO> selectByUserId(Long userId);

    /**
     * 用户关联的角色
     *
     * @param userId 用户id
     * @param type   角色类型
     * @param relId  关联id
     * @return 根据类型查询
     */
    List<UserRoleRelDTO> selectByUserId(Long userId, Integer type, Long relId);

    /**
     * 移除账号角色
     *
     * @param userId 用户id
     * @return 影响记录数
     */
    Integer deleteByUserId(Long userId);

    /**
     * 移除账号角色
     *
     * @param userId 用户id
     * @param type   景区id
     * @param relId  关联id
     * @return 影响记录数
     */
    Integer deleteByUserId(Long userId, Integer type, Long relId);

    /**
     * 移除角色
     * @param roleId 角色id
     */
    Integer deleteByRoleId(Long roleId);

    /**
     *
     * @param userRoleRelDTO
     * @return
     */
    Integer updateByRoleId(UserRoleRelDTO userRoleRelDTO);
}
